package com.one.rope.mvp.basecore.util.bean;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 通用代理方法
 */
public class CommonProxy<T extends Object> implements InvocationHandler {

  private T t;

  public CommonProxy(T t) {
    this.t = t;
  }


  public T getT() {
    return t;
  }


  @Override
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    Object result = null;// 被代理的类型为Object基类
    // 这里就可以进行所谓的AOP编程了
    // 在调用具体函数方法前，执行功能处理
    result = method.invoke(t, args);
    // 在调用具体函数方法后，执行功能处理
    return result;
  }

}
